<?php

declare(strict_types=1);

namespace app\controller\admin;

use app\eslib\EsUtils;
use app\model\admin\EsxdmAuthAdminModel;
use app\model\admin\EsxdmAuthRuleModel;
use app\model\admin\LoginModel;
use app\model\admin\LoginUserModel;
use think\facade\Cache;
use think\Request;

class Login
{
    protected $middleware = [
        \app\middleware\JwtAuthForAdmin::class => ['only' => ['profile', 'menu']]
    ];
    protected $appFlag = 'admin';

    /**
     * 登录
     */
    public function login(Request $request)
    {
        return json(LoginModel::login($request->param(), $this->appFlag, $request->ip()));
    }

    /**
     * 注册
     */
    public function regist(Request $request)
    {
        return json(LoginModel::regist($request->param(), $this->appFlag, $request->ip()));
    }

    /**
     * 个人资料
     */
    public function profile($id)
    {
        if (!is_numeric($id) || $id < 1) {
            $id = LoginUserModel::getId();
        }
        $model = EsxdmAuthAdminModel::find($id);
        if (!$model) {
            return json(EsUtils::stdmessage(0, '记录不存在'));
        }
        $data = [
            'data' => $model,
            'status_data' => $model->getStatusDataAttr(),
            'gender_data' => $model->getGenderDataAttr(),
        ];
        return json(EsUtils::stdmessage(1, $id, $data));
    }

    /**
     * 权限菜单
     */
    public function menu()
    {
        $userId = LoginUserModel::getId();
        $cacheKey = EsUtils::shortMD5($this->appFlag . '_' . $userId . '_menu');
        $data = Cache::get($cacheKey);
        if (!$data) {
            $data = EsxdmAuthRuleModel::getTreeList();
            Cache::set($cacheKey, $data, 10);
        }
        // $data = [
        //     [
        //         'text' => '运营数据',
        //         'children' => [
        //             ['text' => '运营概览', 'link' => ''],
        //             ['text' => '运营日志', 'link' => 'about'],
        //         ],
        //     ],
        //     [
        //         'text' => '系统管理',
        //         'children' => [
        //             ['text' => '系统配置', 'link' => ''],
        //             ['text' => '配置字典', 'link' => 'about'],
        //             ['text' => '配置分组', 'link' => 'about'],
        //         ],
        //     ],
        //     [
        //         'text' => '权限管理',
        //         'children' => [
        //             ['text' => '管理员管理', 'link' => 'esxdm-auth-admin/index'],
        //             ['text' => '角色分组', 'link' => 'esxdm-auth-group/index'],
        //             ['text' => '权限规则', 'link' => 'esxdm-auth-rule/index'],
        //             ['text' => '管理员日志', 'link' => 'esxdm-auth-admin-log/index'],
        //         ],
        //     ],
        //     [
        //         'text' => '商品管理',
        //         'children' => [
        //             ['text' => '商品管理', 'link' => 'ec-goods/index'],
        //             ['text' => '分类管理', 'link' => 'ec-category/index'],
        //             ['text' => '品牌管理', 'link' => 'ec-brand/index'],
        //         ],
        //     ],
        // ];
        return json(EsUtils::stdmessage(1, '', $data));
    }
}
